package com.ylr.send.framework.service;

import com.ylr.base.common.dto.PageDto;
import com.ylr.send.common.dto.SmsLogDetailDto;
import com.ylr.send.common.dto.SmsLogDto;
import com.ylr.send.common.vo.SmsLogFormVo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylr.send.framework.entity.SmsLogEntity;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-06-14 21:23:18
 * className: SmsLogService
 * version: 1.0
 * description:
 */
public interface SmsLogService extends IService<SmsLogEntity> {

    /**
     * 保存短信发送记录操作
     * @param smsTemplateId      短信模板主键
     * @param smsTemplateVersion 短信模板版本
     * @param mobile             接收手机号（密文）
     * @param subMobile          接收手机号（半解密）
     * @param channel            请求渠道
     * @param module             请求来源模块
     * @param param              请求参数（密文）
     * @param result             发送结果（密文）
     * @param status             发送状态
     * @param createUser         操作用户
     * @param createUserId       操作用户主键
     * @param remark             备注
     */
    void saveSmsLog(Long smsTemplateId, Integer smsTemplateVersion, String mobile, String subMobile, Integer channel,
                    Integer module, String param, String result, Integer status, String createUser, Long createUserId,
                    String remark);

    /**
     * 批量保存短信发送记录操作
     * @param smsTemplateId      短信模板主键
     * @param smsTemplateVersion 短信模板版本
     * @param mobileList         接收手机号列表（密文）
     * @param channel            请求渠道
     * @param module             请求来源模块
     * @param param              请求参数（密文）
     * @param result             发送结果（密文）
     * @param status             发送状态
     * @param createUser         操作用户
     * @param createUserId       操作用户主键
     * @param remark             备注
     */
    void batchSaveSmsLog(Long smsTemplateId, Integer smsTemplateVersion, List<String[]> mobileList, Integer channel,
                         Integer module, String param, String result, Integer status, String createUser, Long createUserId,
                         String remark);


    /**
     * 分页查询短信发送记录操作
     * @param smsLogFormVo 参数对象
     * @return 短信发送记录分页数据
     */
    PageDto<SmsLogDto> pageSmsLogList(SmsLogFormVo smsLogFormVo);

    /**
     * 获取短信发送记录操作
     * @param id 主键
     * @return 短信发送记录数据
     */
    SmsLogDto getSmsLog(Long id);

    /**
     * 获取短信发送明细操作
     * @param id 主键
     * @return 短信发送明细
     */
    SmsLogDetailDto getSmsLogDetail(Long id);
}

